<?php
/**
 * Controller base
 */
class MY_Controller extends CI_Controller {

    /**
     * Indica se a sessão já foi iniciada
     * @var boolean
     */
    protected static $sessionStarted = false;

    /**
     * Indica o arquivo de layout padrão
     * @var string
     */
    protected $layoutFile = 'template.php';

    /**
     * Dados para serem enviados para o template
     * @var array
     */
    protected $data = array();

    /**
     * Construtor
     */
    public function __construct(){
        // chamamos o construtor pai
        parent::__construct();
        
        // se a sessão ainda não foi iniciada
        if(!self::$sessionStarted){
            // iniciamos e marcamos como iniciada
            session_start();
            self::$sessionStarted = true;
        }
        
        // carregando a helper customizada
        $this->load->helper('util');
    }

    /**
     * Adiciona um valor para ser enviado para o template
     *
     * @param string $key Nome da chave
     * @param mixed $value Valor a ser enviado
     */
    public function assign($key, $value){
        $this->data[$key] = $value;
    }

    /**
     * Renderiza uma view.
     *
     * @link http://codeigniter.com/user_guide/general/views.html
     *
     * @param string $tpl Nome do template "miolo".
     * @param boolean $return Indica se vamos renderizar na tela (false) ou retornar o resultado como string (true)
     * @return string Resultado da renderização
     */
    public function display($tpl, $return = false){
        // so para garantir que a extensao sempre existirá
        $tpl = preg_replace('@\.php$@i', '', $tpl) . '.php';
        $tpl = (empty($this->uriSession) ? '' : trim($this->uriSession, '/') . '/') . $tpl;
        $this->assign('_template', $tpl);

        return $this->load->view($this->layoutFile, $this->data, $return);
    }
    
    public function displayEx($tpl, $data, $return = false){
        // so para garantir que a extensao sempre existirá
        $tpl = preg_replace('@\.php$@i', '', $tpl) . '.php';
        $tpl = (empty($this->uriSession) ? '' : trim($this->uriSession, '/') . '/') . $tpl;
        $this->assign('_template', $tpl);

        return $this->load->view($this->layoutFile, array_merge($this->data, $data), $return);
    }
}

require_once dirname(__FILE__) . '/AdminController.php';
require_once dirname(__FILE__) . '/SiteController.php';
/* End of file MY_Controller.php */
/* Location: ./application/core/MY_Controller.php */